package protect.week03;

import java.util.ArrayList;
import java.util.Arrays;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/9/15 23:28
 * @package protect.week03
 * @description 605. 种花问题
 * 假设有一个很长的花坛，一部分地块种植了花，另一部分却没有。可是，花不能种植在相邻的地块上，它们会争夺水源，两者都会死去。
 * <p>
 * 给你一个整数数组  flowerbed 表示花坛，由若干 0 和 1 组成，其中 0 表示没种植花，1 表示种植了花。另有一个数 n ，能否在不打破种植规则的情况下种入 n 朵花？能则返回 true ，不能则返回 false。
 * <p>
 *  
 * <p>
 * 示例 1：
 * <p>
 * 输入：flowerbed = [1,0,0,0,1], n = 1
 * 输出：true
 * 示例 2：
 * <p>
 * 输入：flowerbed = [1,0,0,0,1], n = 2
 * 输出：false
 *  
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/can-place-flowers
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

public class Ch02_CanPlaceFlowers {

    public boolean canPlaceFlowers(int[] flowerbed, int n) {
        for(int i = 0 ; i<flowerbed.length;i++){
            if(flowerbed[i] == 0 && ( i==0 ||flowerbed[i-1]==0 ) && ( i==flowerbed.length -1||flowerbed[i+1] ==0 )){
                // 减去一朵花
                n--;
                // 种花操作
                flowerbed[i] = 1;
            }
        }
        // 判断花是否种完
        return n <= 0;
    }

    public static void main(String[] args) {
        System.out.println(new Ch02_CanPlaceFlowers().canPlaceFlowers(new int[]{1, 0, 0, 0, 1},1));
    }
}
